

export default function throttle (callback, wait,  cat ,context = this){
  let timeout = null
  let callbackArgs = null
  context.xcxs= []
  context.isload = {
    'loaded':false,
    'loading':true
  }
  context.$apply()
  const  later = () => {
    let index = Object.keys(context.queues).reverse().indexOf(cat)
    if(!Object.keys(context.queues).length  || index !== 0  ){
      delete context.queues[cat]
      return false
    }
    callback.apply(context, callbackArgs)
    delete context.queues[cat]
    context.$apply()
  }

  return ()=> {
    callbackArgs = arguments
    timeout = setTimeout(later, wait)
    context.queues[cat] = timeout
    context.$apply()
  }
}


// _throttle(callback, wait,  cat, context= this) {
//   let timeout = null
//   let callbackArgs = null
//   this.xcxs= []
//   this.isload = {
//     'loaded':false,
//     'loading':true
//   }
//   this.$apply()
//   const  later = () => {
//     console.log( this.queues, cat ,Object.keys(this.queues).reverse().indexOf(cat))
//     let index = Object.keys(this.queues).reverse().indexOf(cat)
//     if(!Object.keys(this.queues).length  || index !== 0  ){
//       if(!Object.keys(this.queues).length){
//         console.log('请勿重复点击')
//       }else{
//         delete this.queues[cat]
//         console.log( '已丢弃', this.queues, cat ,Object.keys(this.queues).reverse().indexOf(cat))
//       }
//       return false
//     }
//     callback.apply(context, callbackArgs)
//     delete this.queues[cat]
//     this.$apply()
//     timeout = null
//   }
//   return ()=> {
//     callbackArgs = arguments
//     timeout = setTimeout(later, wait)
//     this.queues[cat] = timeout
//     this.$apply()
//   }
// }
